# vFabric Administration Server Ruby API
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


module Shared

  # @abstract A collection of an instance's pending configurations
  class PendingConfigurations < MutableCollection

    # Creates a new configuration. The configuration will be pending until its instance is started at which point the configuration will become live
    #
    # @param path [String] the configuration's path
    # @param content [String] the configuration's content
    #
    # @return [PendingConfiguration] the new configuration
    def create(path, content)
      create_image(content, { :path => path })
    end

  end

  # @abstract A configuration file that is pending and will be made live the next time its instance is started
  class PendingConfiguration < Configuration
    
    include Deletable

    # Updates the contents of the configuration
    #
    # @param new_content [String] the new content
    def content=(new_content)
      client.post(content_location, new_content)
      reload
    end

  end

end